////////////////////////////////////////////////////////////////////////////////
// Filename		AdvancedString.h
// Author		outphase
// Date			2011-09-12
// Comment		
////////////////////////////////////////////////////////////////////////////////
#pragma once

class AdvancedString
{
public:
	AdvancedString(const char* str);
	virtual ~AdvancedString();

	// Getter/Setter
	char At(int index) { return m_Buffer[index]; }
	char Last(int offset = 0) { return m_Buffer[m_Length - offset - 1]; }
	int GetLength() { return m_Length; }
	int GetCursor() { return m_Cursor; }
	char* GetBuffer() { m_Buffer[m_Length] = '\0'; return m_Buffer; }
	void ClearCursor() { m_Cursor = m_Length; }

	// Utilities
	bool IsEndWith(char* endStr, int length = -1);
	bool IsConsonant(int index);
	int GetConsonantCount();
	bool VowelInStem();
	bool IsDoubleConsonant(int index);
	bool IsCVC(int index);
	void SetStringAtCursor(char* string, int length = -1);
	void TrimRight(int length);
	void TrimFromCursor();
	std::string ToString();
private:
	char m_Buffer[512];
	int m_Length;
	int m_Cursor;
};